package org.cfk.asyncdownloadtutorial.service;

import org.cfk.asyncdownloadtutorial.dto.AsyncDownloadJobDTO;

public interface AsyncDownloadJobService {
    /**
     * 根据ID获取异步下载任务
     *
     * @param id 任务ID
     * @return 异步下载任务DTO
     */
    AsyncDownloadJobDTO getById(Long id);

    /**
     * 设置任务为处理中状态
     *
     * @param id 任务ID
     * @return 是否设置成功
     */
    boolean setDownloadGenerating(Long id);

    /**
     * 设置任务为处理失败状态
     *
     * @param id 任务ID
     */
    void setDownloadFail(Long id);

    /**
     * 创建异步下载任务
     *
     * @param worker 处理器名称
     * @param requestContent 请求内容
     * @param fileTitle 文件标题
     * @return 任务ID
     */
    Long createAsyncDownloadJob(String worker, String requestContent, String fileTitle);

    /**
     * 设置任务为下载成功状态
     *
     * @param id       任务ID
     * @param filePath 文件路径
     * @return
     */
    boolean setDownloadSuccess(Long id, String filePath);
}